2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(1)

JIGGLYPOP

염동환


새로운 개발을 좋아하는 개발자

2020-04-01 03:05 시에 저장한 글입니다.

1. 소프트웨어 개발 방법론 활용

소프트웨어 개발 방법론


소프트웨어 개발, 유지보수에 필요한 수행 방법과 효율적으로 수행하려는 과정에서 필요한 기법 및 도구를 정리하여 표준화

구조적 방법론
  • 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
  • Divide and Conquer 원리 적용

img

정보공학 방법론
  • 정보 시스템 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론
  • 대규모 정보시스템 구축에 적합

img

객체지향 방법론
  • 기계의 부품을 조립하듯이 객체들을 조립하여 소프트웨어를 구현하는 방법론
  • 구조적 기법의 해결책으로 채택

img*

컴포넌트 기반(CBD) 방법론
  • 컴포넌트를 조합하여 새로운 애플리케이션을 만드는 방법론
  • 컴포넌트의 재사용이 가능하여 시간, 노력, 비용을 절감하고 품질을 높임

img*

애자일 방법론
  • 고객의 요구사항 변화에 빠르고 유연하게 대응하도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론

img*

제품 계열 방법론
  • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
  • 임베디드 소프트웨어 개발에 적합

비용 산정 기법


소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정하는 것

소프트웨어 비용 결정 요소
  • 프로젝트 요소 : 제품 복잡도, 시스템 크기, 요구되는 신뢰도
  • 자원 요소 : 인적 자원, 하드웨어 자원, 소프트웨어 자원
  • 생산성 요소 : 개발자 능력, 개발 기간
하향식 산정 기법
  • 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정
  • 전문가 감정 기법
  • 조직 내 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
  • 진행했던 유사한 프로젝트와 진행할 새로운 프로젝트 간 새로운 요소가 있을 수 있고 경험이 없을 수 있음
  • 델파이 기법
  • 많은 전문가의 여러 의견을 종합하여 산정
  • 한 명의 조정자와 여러 전문가로 구성되어 객관적임
상향식 산정 기법
  • 프로젝트의 세부적인 작업 단위별로 비용을 산정 후 집계하여 전체 비용을 산정
  • LOC(source Line Of Code) 기법
  • 소프트웨어의 각 기능의 원시 코드 라인 수로 예측치를 구하고 비용을 산정하는 기법
  • 노력(인월) = 개발 기간 x 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
  • 개발 비용 = 노력(인월) x 단위 비용(1인당 월평균 인건비)
  • 개발 기간 = 노력(인월) / 투입 인원
  • 생산성 = LOC / 노력(인월)
  • 개발 단계별 인월수 기법
  • 각 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정

수학적 산정 기법


수학적 산정 기법의 개요
  • 상향식 선정 기법
  • 개발 비용 산정의 자동화를 목표로 함
  • 경험적 / 실험적 추정 모형이라고도 함
  • 과거 유사한 프로젝트를 기반으로 공식을 유도
COCOMO 모형
  • 보헴이 제안하였으며 LOC에 의한 비용 산정 기법
  • 개발 유형 : 소프트웨어의 복잡도 또는 원시 프로그램의 규모에 따라 분류
  • 조직형(Organinc Mode) : 기관 내부에서 개발된 중·소규모의 소프트웨어로 5만 라인 이하의 소프트웨어를 개발하는 유형
  • 반분리형(Semi-Detached Mode) : 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등 30만 라인 이하의 소프트웨어를 개발하는 유형
  • 내장형(Embedded Mode) : 최대형 규모의 트랜잭션 처리 시스템이나 운영체제 등 30만 라인 이상의 소프트웨어를 개발하는 유형
  • 모형의 종류 : 비용 산정 단계 및 적용 변수의 구체화 정도로 구분
  • 기본형(Basic) : 소프트웨어의 크기와 개발 유형만을 이용하여 비용을 산정
  • 중간형(Intermediate) : 기본형의 공식을 사용하거나 4가지 특성의 15가지 요인에 의해 비용을 산정

    • 제품의 특성 : 요구되는 신뢰도, 데이터베이스 크기, 제품의 복잡도
  • 컴퓨터의 특성 : 수행 시간의 제한, 기억 장소의 제한, 가상 기계의 안정성, 반환 시간

    • 개발 요원의 특성 : 분석가의 능력, 개발 분야의 경험, 가상 기계의 경험, 프로그래머의 능력, 프로그래밍 언어의 경험
    • 프로젝트 특성 : 소프트웨어 도구의 이용, 프로젝트 개발 일정, 최신 프로그래밍 기법의 이용
  • 발전형(Detailed) : 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용을 산정
Putnam 모형
  • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형
  • 생명 주기 예측 모형이라고도 함
  • 시간에 따라 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
  • 대형 프로젝트 노력 분포 산정에 이용
  • SLIM : Rayleigh-Norder 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 측정 도구
기능 점수(FP) 모형
  • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고 합산하여 총 기능 점수를 산출하며 총 기능 점수와 영향도를 이용하여 기능 점수를 구한 후 이를 이용해서 비용을 산정
  • 알브레히트가 제안

2. 프로젝트 정보 시스템 구축 관리

신기술 관련 용어


네트워크 관련 신기술 용어
  • IoT(Internet of Things, 사물인터넷) : 정보 통신 기술을 기반으로 실세계와 가상 세계의 다양한 사물과 사람을 인터넷으로 소로 연결하여 진보된 서비스를 제공하기 위한 서비스 기반 기술
  • M2M(Machine to Machine, 사물 통신) : 무선 통신을 이용한 기계와 기계 사이의 통신
  • 모바일 컴퓨팅 : 휴대형 기기로 이동하면서 자유롭게 네트워크에 접속하여 업무를 처리할 수 있는 환경
  • 클라우딩 컴퓨팅 : 각종 컴퓨터 자원을 중앙 컴퓨터에 두고 인터넷 기능을 갖는 단말기로 언제 어디서나 인터넷을 통해 컴퓨터 작업을 수행할 수 있는 환경
  • 모바일 클라우딩 컴퓨팅 : 모바일 컴퓨팅과 클라우딩 컴퓨팅을 혼합하여 클라우드 서비스를 이용하여 모바일 기기로 클라우딩 컴퓨팅 인프라를 구성하여 여러 가지 정보와 자원을 공유하는 ICT 기술
  • 인터클라우드 컴퓨팅 : 각기 다른 클라우드 서비스를 연동하거나 컴퓨팅 자원의 동적 할당이 가능하도록 여러 클라우드 서비스 제공자들이 제공하는 클라우드 서비스나 자원을 연결하는 기술
  • 매시 네트워크 : 차세대 이통통신, 홈네트워킹, 공공 안전 등 특수 목적을 위한 새로운 방식의 네트워크 기술로 대규모 디바이스의 네트워크 생성에 최적화
  • 와이선 : 장거리 무선 통신을 필요로 하는 사물인터넷 서비스를 위한 저전력 장거리 통신 기술
  • NDN(Named Data Networking) : 콘텐츠 자체의 정보와 라우터 기능만으로 데이터 전송을 수행하는 기술
  • NGN(Next Generation Network, 차세대 통신망): 유선망 기반의 차세대 통신망으로 유선망뿐만 아니라 이동 사용자를 목표로 하며 이동 통신에서 제공하는 완전하 이동성 제공을 목표로 개발
  • SDN(Software Defined Networking): 네트워크를 컴퓨터처럼 모델링하여 여러 사용자가 각각의 소프트웨어들로 네트워킹을 가상화하여 제어하고 관리하는 네트워크
  • NFC(Near Field Communication): 고주파를 이용한 근거리 무선 통신 기술
  • UWB(Ultra WideBand): 짧은 거리에서 많은 양의 디지털 데이터를 낮은 전력으로 전송하기 위한 무선 기술로 무선 디지털 펄스라고도 함
  • 피코넷 : 여러 개의 독립된 통신 장치가 블루투스 기술이나 UWB 통신 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술
  • WBAN(Wireless Body Area Network) : 웨어러블 또는 몸에 심는 형태의 센서나 기기를 무선으로 연결하는 개인 영역 네트워킹 기술
  • GIS(Geographic Information System): 지리적인 자료를 수집, 저장, 분석, 출력할 수 있는 컴퓨터 응용 시스템으로 위성을 이용해 모든 사물의 위치 정보를 제공해줌
  • USN(Ubiquitous Sensor Network): 각종 센서로 수집한 정보를 무선으로 수집할 수 있도록 구성하는 네트워크
  • SON(Self Organizing Network): 주변 상황에 맞추어 스스로 망을 구성하는 네트워크
  • 애드 혹 네트워크 : 재난 현장과 같이 별도의 고정된 유선망을 구축할 수 없는 장소에서 모바일 호스트만을 이용하여 구성한 네트워크
  • 네트워크 슬라이싱 : 여러 글로벌 이동통신 표준화 단체가 선정한 5G의 핵심기술 중 하나로 네트워크에서 하나의 물리적인 코어 네트워크 인프라를 독립된 다수의 가상 네트워크로 분리하여 각각의 네트워크를 통해 다양한 고객 맞춤형 서비스를 제공하는 것을 목적으로 하는 네트워크 기술
  • 저전력 블루투스 기술: 일반 블루투스와 동일한 주파수 대역을 사용하지만 연결되지 않은 상태에서는 절전 모드를 유지하는 기술
  • 지능형 초연결망 : 스마트 시티, 스마트 스테이션 등 4차 산업혁명 시대를 맞아 새로운 변화에 따라 급격하게 증가흐는 데이터 트래픽을 효과적으로 수용하기 위해 시행되는 정부 주관 사업
SW 관련 신기술 용어
  • 인공지능 : 인간의 두뇌와 같이 컴퓨터 스스로 추론, 학습, 판단 등 인간 지능적인 작업을 수행하는 시스템
  • 뉴럴링크 : 테슬라의 CEO 일론 머스크가 사람의 뇌와 컴퓨터와 결합하는 기술을 개발하기 위해 설립한 회사
  • 딥 러닝 : 인간의 두뇌를 모델로 만들어진 인공 신경망을 기반으로 하는 기계 학습 기술
  • 전문가 시스템 : 특정 분야의 전문가가 수행하는 고도의 업무를 지원하기 위한 컴퓨터 응용 프로그램
  • 증강현실 : 실제 촬영한 화면에 가상의 정보를 부가하여 보여주는 기술
  • 블록체인 : P2P 네트워크를 이용하여 온라인 금융 거래 정보를 온라인 네트워크 참여자의 디지털 장비에 분산 저장하는 기술
  • 분산 원장 기술 : 중앙 관리자나 중앙 데이터 저장소가 존재하지 않고 P2P 망내의 참여자들에게 모든 거래 목록이 분산 저장되어 거래가 발생할 때마다 지속적으로 갱신되는 디지털 원장
  • 해시 : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환
  • 양자 암호키 분배 : 양자 통신을 위해 비밀키를 분배하여 관리하는 기술
  • 프라이버시 강화 기술 : 개인 정보 위험 관리 기술
  • 공통 평가 기준 : ISO 15408 표준으로 채택된 정보 보호 제품 평가 기준
  • 개인정보 영향평가 제도 : 개인정보를 활용하는 새로운 정보 시스템의 도입 및 기존 정보시스템의 중요한 변경 시 시스템의 구축, 운영이 기업의 고객은 물론 국민의 사생활에 미칠 영향에 대해 미리 조사, 분석, 평가하는 제도
  • 그레이웨어 : 소프트웨어를 제공하는 입장에서는 악의적이지 않은 유용한 소프트웨어 일지라도 사용자 입장에서는 유용할 수도 있고 악의적일 수도 있는 악성 코드나 공유 웨어
  • 매시업 : 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스 데이터베이스 등을 만드는 기술
  • 리치 인터넷 애플리케이션 : 플래스 애니메이션 기술과 웹 서버 애플리케이션 기술을 통합하여 기존 HTML보다 역동적인 웹페이지를 제공하는 플래시 웹페이지 제작 기술
  • 시맨틱 웹 : 컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어 낼 수 있도록 이해하기 쉬운 의미를 가진 차세대 지능형 웹
  • 증발품 : 판매 계획 또는 배포 계획은 발표되었으나 실제로 고객에게는 판매되거나 배포하지 않고 있는 소프트웨어
  • 오픈 그리드 서비스 아키텍처 : 애플리케이션 공유를 위한 웹 서비스를 그리드 상에서 제공하기 위해 만든 개방형 표준
  • 서비스 지향 아키텍처 : 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중신으로 구축하는 정보기술 아키텍처
  • 서비스형 소프트웨어(SaaS) : 소프트웨어의 여러 기능 중에서 사용자가 필요로 하는 서비스만 이용할 수 있도록 한 소프트웨어
  • 소프트웨어 에스크로 : 소프트웨어 개발자의 지적재산권을 보호하고 사용자는 저렴한 비용으로 소프트웨어를 안정적으로 사용 및 유지보수받을 수 있도록 소스 프로그램과 기술 정보 등을 제3의 기관에 보관하는 것
  • 복잡 이벤트 처리 : 실시간으로 발생하는 많은 사건들 중 의미가 있는 것만을 추출할 수 있도록 사건 발생 조건을 정의하는 데이터 처리 방법
  • 디지털 트윈 : 현실속의 사물을 소프트웨어로 가상화한 모델
HW 관련 신기술 용어
  • 고가용성 : 긴 시간동안 안정적인 서비스 운영을 위해 장애 즉시 다른 시스템으로 대체 가능한 환경을 구축하는 메커니즘
  • 3D 프린팅 : 평면에 출력하는 것이 아닌 얇은 두께로 한층 한층 적재시켜 하나의 형태를 만들어내는 기술
  • 4D 프린팅 : 특정 시간이나 환경 조건이 갖추어지면 스스로 형태를 변화시키거나 제조되는 자가 조립 기술이 적용된 제품을 3D 프린팅 하는 기술
  • RAID : 여러 개의 하드디스크로 디스크 배열을 구성하여 파일을 구성하여 파일을 구성하고 있는 데이터 블록들을 서로 다른 디스크들에 분산 저장하는 기술
  • 앤 스크린 : N개의 서로 다른 단말기에서 동일한 콘텐츠를 자유롭게 이용할 수 있는 서비스
  • 컴패니언 스크린 : TV 방송 시청 시 방송 내용을 공유하며 추가적인 기능을 수행할 수 있는 디바이스
  • 씬(Thin) 클라이언트 PC : 하드디스크나 주변 장치 없이 기본적인 메모리만 갖추고 서버와 네트워크로 운용되는 개인용 컴퓨터
  • 멤스 : 초정밀 반도체 기술을 바탕으로 센서나 액추에이터 등 기계 구조를 다양한 기술로 미세 가공하여 전기기계적 동작을 할 수 있도록 한 초미세 장치
  • 패블릿 : 태블릿 기능을 포함한 5인치 이상의 대화면 스마트폰
  • 트러스트존 기술 : ARM에서 개발한 하나의 프로세서 내에 일반 애플리케이션을 처리하는 일반 구역과 보안이 필요한 애플리케이션을 처리하는 보안 구역으로 분할하여 관리하는 하드웨어 기반의 보안 기술
  • 엠디스크 : 한 번의 기록만으로도 자료를 영구 보관할 수 있는 광 저장 장치
  • 멤리스터 : 메모리와 레지스터의 합성어로 전류의 방향과 양 등 기존의 경험을 모두 기억하는 소자
DB 관련 신기술 용어
  • 빅데이터 : 기존의 관리 방법이나 분석 체계로는 처리하기 어려운 막대한 양의 정형 / 비정형 데이터 집합
  • 브로드 데이터 : 다양한 채널에서 소비자와 상호 작용을 통해 생산 되었거나 기업 마케팅에 있어 효율적이고 다양한 데이터, 이전에 사용하지 않거나 몰랐던 새로운 데이터나 기존 데이터에 새로운 가치가 더해진 데이터
  • 메타 데이터 : 일련의 데이터를 정의하고 설명해주는 데이터
  • 디지털 아카이빙 : 디지털 정보 자원을 장기적으로 보존하기 위한 작업
  • 하둡 : 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼
  • 타조 : 우리나라가 주도적으로 개발 중인 하둡 기반의 분산 데이터 웨어하우스 프로젝트
  • 데이터 다이어트 : 데이터를 삭제하는 것이 아닌 압축하고 중복된 정보를 배제하고 새로운 기분에 따라 나누어 저장하는 작업

네트워크 구축


정보를 전달하기 위해 통신 규약에 의해 연결한 통신 설비의 집합

성형(중앙 집중형)
  • 중앙 컴퓨터에 단말 장치들이 연결되는 구조
  • Point-to-Point 방식으로 연결
  • 중앙 집중식이므로 교환 노드의 수가 가장 적음
  • 단말장치가 고장이나도 전체에 영향을 주지 않지만 중앙 장치가 고장이 나면 전체에 영향을 줌
링형(루프형)
  • 컴퓨터와 단말장치들을 서로 이웃하는 것끼리 Point-to-Point 방식으로 연결
  • 데이트는 단방향 또는 양방향으로 전송 가능
  • 하나의 단말장치라도 고장이나면 전체에 영향을 줌
버스형
  • 한 개의 통신 회선에 여러 대의 단말 장치가 연결되어 있는 형태
  • 단말장치가 고장이나도 전체에 영향을 주지 않음
계층형(분산형)
  • 중앙 컴퓨터와 일정 지역의 단말 장치까지는 하나의 회선으로 연결시키고 이웃하는 단말장치는 일정 지역 내 설치된 중간 단말장치로부터 다시 연결
  • 분산처리 시스템을 구성하는 방식
망형(메쉬형)
  • 모든 지점의 컴퓨터와 단말장치를 서로 연결시킨 상태
  • 많은 양의 통신을 필요로 하는 경우 사용
  • 필요한 포트의 수 = 노드 수 - 1
  • 필요한 회선의 수 = 노드 수(노드 수 -1) / 2

포트 수 = 4 / 회선 수 = 5x4/2 = 10

네트워크 분류
  • 근거리 통신망(LAN)
  • 비교적 가까운 거리에 있는 노드들을 연결하여 구성
  • 주로 버스형이나 링형 구조 사용
  • 광대역 통신망(WAN)
  • 국가와 국가, 대륙과 대륙 등 멀리 떨어진 사이트들을 연결하여 구성
  • 일정 지역은 LAN으로 연결하고 각 LAN을 연결하는 방식을 사용

스위치


LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치

스위치의 분류
  • L2 스위치

    • OSI 2계층에 속함
    • 일반적으로 부르는 스위치를 말함
    • MAC주소를 기반으로 프레임 전송
    • 동일 네트워크 간 연결만 가능
  • L3 스위치

    • OSI 3계층에 속함
    • L2 스위치에 라우터 기능이 추가
    • IP 주소를 기반으로 패킷 전송
    • 서로 다른 네트워크 연결 가능
  • L4 스위치

    • OSI 4계층에 속함
    • L3 스위치에 로드밸런서(트래픽 분산 장치) 추가
    • IP 주소 및 TCP/UDP를 기반으로 사용자들의 요구를 서버의 부하가 적은 곳에 배분하는 로드밸런싱 기능 제공
  • L7 스위치

    • OSI 7계층에 속함
    • IP 주소, TCP/UDP 포트 ㅈ어보에 패킷 내용까지 참조하여 세밀하게 로드밸런싱함
스위칭 방식
  • 스위치가 프레임을 전달하는 방식에 따라 나뉨
  • Store and Forwarding : 데이터를 모두 받은 후 스위칭
  • Cut-through : 데이터의 목적지 주소만 확인 후 바로 스위칭
  • Fragment Free : 위의 두 방식의 장점만을 결합한 방식
백본 스위치
  • 여러 네트워크들을 연결할 때 중추적 역할을 하는 네트워크인 백본에서 스위칭하는 장비
  • 모든 패킷이 지나가는 네트워크 중심에 배치
  • 주로 L3 스위치가 백본 스위치 역할을 함

경로 / 트래픽 제어


경로 제어의 개요
  • 전송 경로 중 어느 한 경로에 데이터의 양이 집중되는 것을 피하면서 최저의 비용으로 최단 시간에 송신할 수 있는 경로인 최적 패킷 교환 경로를 결정
  • 경로 제어표를 참조해서 라우터에 의해 수행
  • 경로 제어 요소 : 성능 기준, 경로의 결정 시간 / 장소, 정보 발생지, 경로 정보의 갱신 시간
  • -
경로 제어 프로토콜
  • 효율적인 경로 제어를 위해 네트워크를 제어하는 프로토콜
  • IGP(내부 게이트웨이 프로토콜)

    • 하나의 자율 시스템(AS) 내의 라우팅에 사용
    • RIP : 현재 가장 널리 사용되며 소규모 네트워크에서 효율적인 방법
    • OSPF : 대규모 네트워크에서 많이 사용되는 프로토콜
  • EGP(외부 게이트웨이 프로토콜)

    • 자율 시스템 / 게이트웨이 간 라우팅에 사용되는 프로토콜
  • BGP

    • 자율 시스템 간의 라우팅 프로토콜
    • EGP의 단점을 보완하기 위해 만들어짐
    • 초기 연결 시 라우팅 테이블을 교환하고 이후에는 변화된 정보만을 교환
트래픽 제어의 개요
  • 네트워크의 보호, 성능 유지, 자원의 효율적인 이용을 위해 전송되는 패킷의 흐름, 양을 조절하는 기능
흐름 제어
  • 네트워크 내의 원활한 흐름을 위해 송수신 사이 전송되는 패킷의 양이나 속도를 규제
  • 송수신간 처리 속도 또는 버퍼 크기의 차이에 의해 생길 수 있는 버퍼 오버플로우를 방지
  • 정지-대기 : 수신 측에서 확인 신호를 받아야 다음 패킷을 전송
  • 슬라이딩 윈도우

    • 확인 신호를 이용하여 송신 데이터의 양을 조절
    • 수신 측의 확인 신호를 받지 않아도 정해진 패킷 수만큼 연속적으로 전송하는 방식
    • 한 번에 여러 개의 패킷을 전송할 수 있음
혼잡 제어
  • 네트워크 내의 패킷 수를 조절하여 네트워크의 오버플로우를 방지
교착상태 방지
  • 교환기 내에 패킷들을 축적하는 기억 공간이 꽉 차있을 때 다음 패킷들을 이 기억 공간에 들어가기 위해 무한정 기다리는 현상을 방지

소프트웨어 개발 보안


소프트웨어 개발 보안의 개요
  • 소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 보안 활동
  • 데이터의 기밀성, 무결성, 가용성을 유지하는 것이 목표
소프트웨어 개발 보안 관련 기관
  • 행정안전부(정책기관), 한국인터넷진흥원(전문기관), 행정기관(발주기관), 사업자(개발기관), 감리법인(보안 약점 진단)

소프트웨어 개발 직무별 보안 활동


소프트웨어 개발 직무별 보안 활동
  • 프로젝트 관리자 : 보안 전략을 조직 구성원에게 전달하고 모니터링
  • 요구사항 분석가 : 아키텍트가 고려해야 할 보안 관련 비즈니스 요구사항을 설명
  • 아키텍트 : 보안 오류가 발생하지 않도록 보안 기술 문제를 충분히 이해하고 시스템에 사용되는 모든 리소스 정의 및 보안 요구사항 적용
  • 설계자 : 특정 기술에 대해 보안 요구사항의 만족성 여부를 파악하고 소프트웨어에서 발견된 보안 위협에 대해 적절히 대응
  • 구현 개발자 : 개발 환경에서 프로그램을 구현할 수 있도록 시큐어 코딩 표준을 준수하여 개발
  • 테스트 분석가 : 개발 요구사항과 구현 결과를 반복적으로 확인
  • 보안 감시자 : 개발 프로젝트의 전체 단계에서 활동하며 현재 상태와 보안을 보장

Secure OS


Secure OS의 개요
  • 기존 운영체제에 내재된 보안 취약점을 해소하기 위해 보안 기능을 갖춘 커널을 이식한 운영체제
  • TCB를 기반으로 참조모니터의 개념을 구현하고 집행
  • 참조 모니터와 보안 커널의 특징 : 격리성, 검증 가능성, 완전성
  • 보호 대상 : 메모리, 보조 기억장치 및 저장된 데이터, 하드웨어 장치, 자료 구조, 명령어, 각종 보호 메커니즘 등

img*

Secure OS의 보안 기능
  • 식별 및 인증, 임의적 접근통제, 강제적 접근 통제, 객체 재사용 보호, 완전한 조정, 신뢰 경로, 감사 및 감사기록 축소

회복 / 병행제어


회복
  • 트랜잭션을 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 복구하는 작업
  • 장애의 유형 : 트랜잭션 장애, 시스템 장애, 미디어 장애
  • 회복 관리기 : 트랜잭션이 실행이 완료되지 못하면 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Undo)시키고 이전의 원래 상태로 복구하는 역할을 담당
병행 제어
  • 동시에 여러 개의 트랜잭션을 수행할 때 데이터베이스의 일관성을 유지할 수 있도록 트랜잭션 간 상호작용을 제어
  • 병행 제어의 목적
  • 데이터베이스의 공유 및 시스템의 활용도 최대화
  • 데이터베이스 일관성 유지
  • 응답 시간 최소화
병행 수행의 문제점
  • 갱신 분실 : 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어짐
  • 비 완료 의존성 : 하나의 트랜잭션이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조
  • 모순성 : 병행 수행될 때 원치 않는 자료를 이용하여 문제가 발생
  • 연쇄 복귀 : 트랜잭션 중 하나에 문제가 생겨 ROLLBACK 하는 경우 다른 트랜잭션도 같이 ROLLBACK 됨

데이터 표준화


데이터 표준화의 정의
  • 시스템을 구성하는 데이터 요소의 명칭, 정의, 형식, 규칙에 대한 원칙을 수립하고 정의
데이터 표준
  • 데이터 모델이나 데이터베이스에서 정의할 수 있는 모든 오브젝트를 대상으로 수행
  • 표준 단어 : 업무에서 사용하는 일정한 의미를 가진 최수 단위의 단어
  • 표준 도메인 : 칼럼을 성질에 따라 그룹핑함
  • 표준 코드 : 선택할 수 있는 값을 기준에 맞게 이미 정의된 코드값
  • 표준 용어 : 표준 단어 / 도메인 / 코드를 바탕으로 표준 용어 구성
데이터 표준화 절차

img*

데이터 표준화의 대상
  • 데이터 명칭 : 데이터를 유일하게 구별, 의미 전달, 업무적 보편성을 갖는 이름을 가져야 함
  • 데이터 정의 : 제3자의 입장에서도 쉽게 이해할 수 있도록 데이터가 의미하는 범위와 자격 요건을 규정
  • 데이터 형식 : 데이터를 형식을 일관적으로 정의함으로써 데이터 입력 오류 및 통제 위험 등을 최소화
  • 데이터 규칙 : 데이터 값을 사전에 지정해 데이터의 정합성 및 완전성 향상
데이터 표준화의 기대효과
  • 데이터의 의미나 위치를 파악하고 의사소통하기 쉽다
  • 데이터 유지보수 및 운용에 있어 여러 이점이 있음

3. 소프트웨어 개발 보안 구축

Secure SDLC


Secure SDLC의 개요(요구사항 분석, 설계, 구현, 테스트 단계, 유지 보수)
  • 보안상 안전한 소프트웨어를 개발하기 위해 SDLC(소프트웨어 개발 생명주기)에 보안 강화를 위한 프로세스를 포함한 것
  • 유지보수 단계에서 보안 이슈를 해결하기 위해 소모되는 비용을 최소화하기 위함
  • Secure Software 사의 CLASP, Microsoft 사의 SDL 등
요구사항 분석 단계에서의 보안 활동(기밀성, 무결성, 가용성, 인증, 부인 방지)
  • 보안 항목에 해당하는 요구사항을 식별하는 작업 수행
  • 보안 수준을 보안 요소별로 등급을 구분하여 분류
  • 보안 요소 : 기밀성, 무결성, 가용성, 인증, 부인 방지
설계 단계에서의 보안 활동
  • 식별된 요구사항을 소프트웨어 설계서에 반영하고 보안 설계서 작성
  • 네트워크, 서버, 물리적 보안, 개발 프로그램 등 환경에 대한 보안통제 기준을 수립하여 설계에 반영
구현 단계에서의 보안 활동
  • 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하여 설계서에 따라 보안 요구 사항 구현
  • 단위 테스트 실행
  • 시큐어 코딩 : 구현 단계에서 발생할 수 있는 보안 취약점을 최소화하기 위해 보안 요소들을 고려하여 코딩
테스트 단계에서의 보안 활동
  • 작성된 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검
유지보수 단계에서의 보안 활동
  • 이전 과정을 모두 수행했음에도 발생할 수 있는 보안사고들을 식별하고 발생 시 해결하고 보안 패치 실시

세션 통제


세션 통제의 개요
  • 서버와 클라이언트의 연결인 세션 간의 연결로 인해 발생하는 정보를 관리
  • 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용
불충분한 세션 관리
  • 일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생
  • 세션 하이재킹(세션 정보를 가로채는 공격)을 통해 획득한 세션 ID로 접근할 수 있음
잘못된 세션에 의한 정보 노출
  • 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생
  • 변수의 범위를 제한하는 방법으로 방지 가능
  • 싱글톤 패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나 멤버 변수의 정보가 노출될 수 있음
  • 레이스컨디션 : 두 개 이상의 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태
세션 설계 시 고려사항
  • 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함
  • 이전 세션이 종료되지 않으면 새로운 세션이 생성되지 못하도록 함

입력 데이터 검증 및 표현


입력 데이터 검증 및 표현의 개요
  • 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목
  • 개발 단계에서 유효성 검증 체계를 갖추고 검증되지 않은 데이터가 입력될 시 처리할 수 있도록 구현해야 함
  • 일관된 언어셋을 사용하여 코딩
입력 데이터 검증 및 표현의 보안 약점

img

보안 기능


보안 기능의 개요
  • 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화들을 올바르게 구현하기 위해 구현 단계에서의 보안 점검 항목
보안 기능의 보안 약점

img

시간 및 상태


시간 및 상태의 개요
  • 동시 수행을 지원하는 병렬 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 원활하게 동작되도록 하기 위한 보안 검증 항목
TOCTOU 경쟁 조건
  • 검사 시점과 사용 시점을 고려하지 않고 발생하는 보안 약점
종료되지 않은 반복문 또는 재귀 함수
  • 조건이나 논리 구조를 잘못 구성하여 종료할 수 없게 되는 경우 시스템 자원을 끊임없이 사용하여 자원고갈로 인한 서비스 또는 시스템 장애 발생

에러 처리의 개요


에러 처리의 개요
  • 소프트웨어 실행 중 발생할 수 있는 오류들을 사전에 정의하여 오류로 인해 발생할 수 있는 문제들을 예방하기 위한 보안 점검 항목
  • 예외처리 구문을 통해 오류에 대한 사항 정의
오류 메시지를 통한 정보 노출
  • 오류 발생으로 실행 환경, 사용자 정보, 디버깅 정보 등 중요 정보를 소프트웨어가 메시지로 외부에 노출하는 보안 약점
  • 오류 발생 시 최대한 내부에서 처리하거나 메시지를 최소한의 내용으로 출력하여 정보 노출을 방지해야 함
오류 상황 대응 부재
  • 소프트웨어의 오류에 대한 에러 처리를 하지 않았거나 미비로 인해 발생하는 보안 약점
부적절한 예외처리
  • 함수의 반환 값 또는 오류들을 세분화하여 처리하지 않고 광범위하게 묶어서 한 번에 처리하거나 누락된 예외가 존재할 때 발생하는 보안 약점

코드 오류


코드 오류의 개요
  • 소프트웨어 구현 단계에서 코딩 중 실수하기 쉬운 형 변환, 자원 반환 등 오류를 예방하기 위한 보안 점검 항목
널 포인터 역참조
  • 널 포인터가 가리키는 메모리에 어떠한 값을 저장할 때 발생하는 보안 약점
  • 오류로 인해 반환되는 널 값을 포인터로 참조하는 경우 발생
부적절한 자원 해제
  • 자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점
  • 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족이 발생
해제된 자원 사용
  • 이미 반환된 메모리를 참조하는 경우 발생하는 보안 약점
  • 반한 된 메모리를 참조하는 경우 예상하지 못한 값 또는 코드를 수행하게 되어 의도하지 않은 결과가 발생됨
초기화되지 않은 변수 사용
  • 변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생하는 보안 약점

캡슐화


캡슐화의 개요
  • 정보 은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목
제거되지 않고 남은 디버그 코드
  • 개발 중에 버그 수정이나 결과값을 확인을 위해 남겨둔 코드들로 인해 발생하는 보안 약점
시스템 데이터 정보 노출
  • 시스템의 내부 정보를 시스템 메시지 등을 통해 외부로 출력하도록 구현했을 때 발생하는 보안 약점
Public 메소드로부터 반환된 Private 배열
  • Private 배열을 Public 메소드에서 반환할 때 발생하는 보안 약점
Private 배열에 Public 데이터 할당
  • Private 배열에 Public으로 선언된 데이터 또는 메소드의 파리 미터를 저장할 때 발생하는 보안 약점

API 오용


API 오용의 개요
  • 소프트웨어 구현 단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하는 보안 검증 항목
DNS Lookup에 의존한 보안 결정
  • 도메인명에 의존하여 보안 결정을 내리는 경우 발생하는 보안 약점
  • IP 주소를 직접 입력하여 접근하게 하여 방지 가능
취약한 API 사용
  • 보안 문제로 사용이 금지된 API를 사용하거나 잘못된 방식으로 API를 사용했을 때 발생하는 보안 약점

암호 알고리즘


암호 알고리즘의 개요
  • 중요정보를 보호하기 위한 평문을 암호화된 문장으로 만드는 방법

img*

개인키 암호화 기법
  • 동일한 키로 데이터를 암호화하고 복호화함
  • 대칭 암호 기법, 단일키 암호화 기법이라고도 함
  • Stream 기법 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화
  • Block 기법 : 한 번에 하나의 데이터 블록을 암호화
공개키 암호화 기법
  • 데이터를 암호화하는 공개키는 데이터베이스 사용자에게 공개하고 복호화하는 비밀키는 관리자에게만 공개
  • 비대칭 암호화 기법이라고도 함
  • RSA기법 : 공개키와 비밀키는 메시지를 열고 잠그는 상수를 의미
양방향 암호화 알고리즘 종류
  • SEED : 블록 크기는 128비트, 키의 길이에 따라 128, 256로 분류
  • ARIA : 블록 크기는 128비트, 키의 길이에 따라 128, 192, 256로 분류
  • DES : 블록 크기는 64비트, 키의 길이 56비트
  • AES : 블록 크기는 128비트, 키의 길이에 따라 128, 192, 256로 분류
해시(Hash)
  • 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환
  • SHA 시리즈, MD5, N-NASH, SNEFRU 등

4. 시스템 보안 구축 정리

서비스 공격 유형


서비스 거부 공격의 개념
  • 표적이 되는 서버의 자원을 고갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버를 집중적으로 전송함으로써 표적이 되는 서버의 정상적인 기능을 방해
Ping of Death
  • Ping 명령 전송 시 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 공격하여 대상의 네트워크를 마비시키는 서비스 거부 방법
SMURFING
  • IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법
SYN Flooding
  • 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법
TearDrop
  • 데이터의 송수신 단계에서 전송되는 Fragment Offset 값을 변경시켜 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로 시스템이 다운되도록 하는 공격 방법
Land
  • 패킷 전송 시 송수신 IP 주소를 모두 공격 대상의 IP주소로 하여 공격 대상에게 전송하여 무한히 자신에게 응답을 수행하게 되는 공격 방법
DDos(Distributed Denial of Service, 분산 서비스 거부) 공격
  • 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 공격을 수행
  • 네트워크에서 취약점이 있는 호스트들을 탐색한 후 호스트들에게 분산 서비스 공격 툴을 설치하여 에이전트로 만든 후 공격에 이용
  • 분산 서비스 공격 툴

    • Trin00 : 초기 형태의 데몬으로 UDP Flooding 공격 수행
    • TFN : UDP Flooding, TCP SYN Flood 공격, ICMP 응답 요청, 스머핑 공격 등 수행
    • TFN2K : TFN의 확장판
    • Stacheldraht : 이전의 툴들을 유지하면서 암호화된 통신을 수행하며 툴이 자동으로 업데이트 되도록 설계
네트워크 침해 공격 관련 용어
  • 스미싱 : 문자 메시지를 이용해 사용자의 개인 신용 정보를 빼내는 수법
  • 스피어 피싱 : 일반적인 이메일로 위장한 메일을 지속적으로 발송하여 메일의 링크나 첨부된 파일을 클릭하게 유도하여 개인 정보를 탈취
  • APT(지능형 지속 위협) : 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격
  • 무작위 대입 공격(Brute Force Attack): 암호화된 문서의 암호키를 찾기 위해 무작위로 값을 대입하여 공격하는 방식
  • 큐싱 : QR코드를 통해 악성 앱을 다운받게 하여 개인 정보를 탈취하는 공격 방식
  • SQL 삽입 공격 : 웹사이트를 무차별적으로 공격하는 과정에서 취약한 사이트 발견 시 데이터를 조작하는 일련의 공격 방식
  • 크로스 사이트 스크립 : 웹 페이지의 내용을 사용자 브라우저에 표현하기 위해 사용되는 스크립트의 취약점을 악용한 해킹 기법
정보 보안 침해 공격 관련 용어
  • 좀비 PC : 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터
  • C&C 서버 : 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버
  • 봇넷 : 악성 프로그램에 감염된 컴퓨터들이 네트워크로 연결된 형태
  • : 네트워크를 통해 연속적으로 자신을 복사하여 시스템의 부하를 높여 시스템을 다운시키는 바이러스의 일종
  • 제로 데이 공격: 보안 취약점이 발견됐을 때 공표되기도 전에 해당 취약점을 통해 신속하게 이루어지는 보안 공격
  • 키로거 공격 : 사용자의 키보드 움직임을 탐지하여 개인 정보를 몰래 빼가는 공격
  • 랜섬웨어 : 사용자의 컴퓨터에 잡입해 파일을 암호화하여 사용자가 열지 못하게 하는 프로그램
  • 백도어 : 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀 통로를 통해 범죄에 악용되는 형태
  • 트로이 목마 : 정상적인 기능을 하는 프로그램인 척 프로그램에 숨어 있다가 해당 프로그램이 동작될 때 활성화되어 부작용을 일으키는 형태

서버 인증


보안 서버의 개념
  • 인터넷을 통해 개인정보를 암호화하여 송수신할 수 있는 기능을 갖춘 서버
  • 서버에 SSL(Secure Socket Layer) 인증서를 설치하여 전송 정보를 암호화하여 송수신
  • 서버에 암호화 응용 프로그램을 설치하고 전송 정보를 암호화하여 송수신
인증의 개념
  • 다중 사용자 컴퓨터 / 네트워크 시스템에서 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
  • 지식 기반 인증

    • 사용자가 기억하고 있는 정보를 기반으로 인증을 수행
    • 고정된 패스워드, 패스 프레이즈, 아이핀
  • 소유 기반 인증

    • 사용자가 소유하고 있는 것을 기반으로 인증을 수행
    • 신분증, 메모리 카드, 스마트 카드, OTP
  • 생체 기반 인증

    • 사용자의 고유한 생체 정보를 기반으로 인증을 수행
    • 지문, 홍채/망막, 얼굴, 음성, 정맥
  • 기타 인증 방법

    • 행위 기반 인증 : 사용자의 행동 정보를 이용해 인증 수행
    • 위치 기반 인증 : 인증을 시도하는 위치나 적절성 확인

보안 아키텍처 / 프레임워크


보안 아키텍처
  • 정보 시스템의 무결성, 가용성, 기밀성을 확보하기 위해 보안 요소 및 보안 체계를 식별하고 이들 간의 관계를 정의한 구조
  • ITU-T, X.805의 보안 표준을 기준으로 하여 보안 아키텍처 모델 구성
  • 보안 계층 : 인프라 시스템, 응용 프로그램, 데이터, 단말기, 인터페이스
  • 보안 영역 : 정보 시스템, 제어 시스템, 클라우드, 무선, 사물인터넷
  • 보안 요소 : 인증, 접근 통제, 데이터 처리 보호, 암호화, 감사 추적, 위협 탐지
보안 프레임워크
  • 안전한 정보 시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
  • ISO 27001 : 정보 보안 관리를 위한 국제 표준이며 가장 대표적인 보안 프레임워크

로그 분석


로그의 개념
  • 시스템 사용에 대한 모든 내역을 기록하여 시스템 침해 사고 발생 시 해킹 흔적이나 공격 기법을 파악할 수 있음
리눅스 로그
  • var/log 디렉토리에서 기록하고 관리
  • syslogd 데몬은 etc/syslog.conf 파일을 읽어 로그 관련 파일들의 위치를 파악 후 작업 시작
  • 커널 로그, 부팅 로그, 크론 로그, 시스템 로그, 보안 로그, FTP 로그, 메일 로그
윈도우 로그
  • Windows 시스템에서 이벤트 로그 형식으로 시스템의 로그 확인
  • 응용 프로그램, 보안, 시스템, Setup, Forwareded Event에 대한 로그 확인 가능

보안 솔루션


접근 통제, 침입 차단 등을 수행하여 외부로부터 불법적인 침입을 막는 기술 및 시스템

방화벽
  • 기업이나 조직 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용, 거부, 수정하는 기능을 가진 침입 차단 시스템
침입 탐지 시스템(IDS)
  • 컴퓨터 시스템의 비정상적인 행위를 실시간으로 탐지하는 시스템
  • 문제 발생 시 모든 내외부 정보의 흐름을 실시간으로 차단하기 위해 해커 침입 패턴에 대한 추적과 유해 정보 감시가 필요
침입 방지 시스템(IPS)
  • 방화벽과 침입 탐지 시스템을 결합
  • 비정상적인 트래픽을 능동적으로 차단하고 격리하는 방어 조치를 취하는 보안 솔루션
데이터 유출 방지(DLP)
  • 내부 정보의 외우 유출을 방지하는 보안 솔루션
  • 내부 PC와 네트워크 상의 모든 정보를 검색하고 사용자 행위를 탐지, 통제해 외부로의 유출을 사전에 방지
웹 방화벽
  • 일반 방화벽이 탐지하지 못하는 SQL 삽입 공격, XSS 등의 웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽
VPN(가상 사설 통신망)
  • 인터넷 등 통신 사업자의 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
NAC
  • 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록 후 일관된 보안 관리 기능을 제공하는 보안 솔루션
ESM
  • 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션